Mass data storage systems are used for many purposes, including storing user and system data for data processing, backup and transmission applications. A typical mass storage system includes numerous computer disk drives that cooperatively store data, for example, as a single logically contiguous storage space, often referred to as a volume or a logical unit. One or more such volumes/logical units may be configured in a storage system. The storage system therefore performs much like that of a single computer disk drive when viewed by a host computer system. For example, the host computer system can access data of the storage system much like it would access data of a single internal disk drive, in essence, without regard to the substantially transparent underlying control of the storage system.
A mass storage data system may include one or more storage modules with each individual storage module comprising multiple disk drives coupled to one or more storage controllers. In one common configuration, a storage module may be coupled through its storage controller(s) directly to a host system as a standalone storage module. Typical storage controllers include significant cache memory capacity to improve performance of the I/O operation. Write requests may be completed when the supplied data is written to the higher speed cache memory. At some later point, the data in cache memory may be flushed or posted to the persistent storage of the storage modules. In a standalone configuration, it is common to enhance reliability and performance by providing a redundant pair of storage controllers. The redundant pair of controllers enhances reliability in that an inactive storage controller may assume control when an active controller is sensed to have failed in some manner.
In another standard system configuration, a storage module may be part of a larger storage network or “cluster.” For a cluster-type architecture, multiple storage modules and corresponding storage controllers are typically coupled through a switched network communication medium, known as a “fabric,” to one or more host systems. This form of storage module system is often referred to as a Storage Area Network (SAN) architecture and the switching fabric is, concomitantly, referred to as a SAN switching fabric. In such a clustered configuration, it is common that all of the storage controllers exchange coherency information and other information for load balancing of I/O request processing and other control information. Such control information may be exchanged over the same network fabric that couples the storage controllers to the host systems (e.g., a “front end” connection) or over another fabric that couples the storage controllers to the storage modules (e.g., a “back-end” connection).
A network storage appliance (e.g., a storage server) is typically a discrete special-purpose computer that provides file services relating to the organization of information on the storage devices of a mass data storage system. The network storage appliance, or “filer,” includes integrated software (firmware) and an operating system that implements a file system to logically organize information, for example, as a hierarchical structure of directories and files on the storage devices (e.g., storage disks). Each “on-disk” file may be implemented as a set of disk blocks configured to store information, such as text; the directory, by comparison, may be implemented as a specially formatted file in which information about other files and directories are stored.
On-disk format representation of the some file systems is block-based using, for example, four kilobyte (KB) blocks (4K block) and index nodes to describe the files. Index nodes, which are informally referred to as “modes,” are data structures used to store information, such as metadata, about a file. That is, the information contained in a typical mode may include, e.g., file ownership data, file access permission data, file size, file type, and on-disk location of the data for the file. The file system uses an identifier with an mode number, known as a “file handle,” to retrieve an mode from a disk. The file system also uses metadata files to store metadata describing the layout of its file system. An example of on-disk format structure of one standard file system is described in U.S. Pat. No. 5,819,292 to David Hitz et al., which is incorporated herein by reference in its entirety and for all purposes.
Presently, some filing systems address disk blocks at a granularity of four kilobytes per block. In effect, these file systems will allocate a 4K block and consume at least 4 KB worth of disk space for any data file even if the 4K block contains only a few bytes of valid data. For instance, standard workloads almost invariably fail to align with 4 KB file sizes, which means that, irrespective of file size, tail ends of the files are always less than 4 KB but nevertheless each consumes an entire 4K block. As another example, small file home directory workloads, such as those utilized in social networking environments (e.g., small (140-character) messages, microblogs, thumbnails, etc.), will tie up an entire 4K block for each data file. Likewise, for files with moderate to high compressible data, the compressed data is oftentimes less than 4 KB (e.g., in the order of 1 KB); nevertheless, an entire 4K block is allocated for the compressed data. Such practices, when applied across the entire data storage system, lead to an inefficient utilization of physical storage space. There is therefore a need for a file system protocol that more efficiently and effectively utilizes space within each disk block to store relevant data.
The present disclosure is susceptible to various modifications and alternative forms, and some representative embodiments have been shown by way of example in the drawings and will be described in detail herein. It should be understood, however, that the inventive aspects are not limited to the particular forms illustrated in the drawings. Rather, the disclosure is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the disclosure as defined by the appended claims.